package com.zxl.designpattern.behavioral.observer;

/**
 * 主类，演示观察者模式的使用
 */
public class Test {
    public static void main(String[] args) {
        // 创建主题（被观察对象）
        WeatherData weatherData = new WeatherData();
        // 创建并注册观察者
        weatherData.registerObserver(new CurrentConditionsDisplay());
        weatherData.registerObserver(new StatisticsDisplay());
        // 创建观察者，这个单独拿出来是测试移除观察者的功能
        ForecastDisplay forecastDisplay = new ForecastDisplay();
        weatherData.registerObserver(forecastDisplay);

        // 模拟天气数据变化
        System.out.println("=== 第一次天气更新 ===");
        weatherData.setMeasurements(25.0, 65, 1013);
        
        System.out.println("\n=== 第二次天气更新 ===");
        weatherData.setMeasurements(28.0, 70, 1010);
        
        System.out.println("\n=== 第三次天气更新 ===");
        weatherData.setMeasurements(22.0, 55, 1015);
        
        // 移除一个观察者
        weatherData.removeObserver(forecastDisplay);
        
        System.out.println("\n=== 第四次天气更新（已移除ForecastDisplay） ===");
        weatherData.setMeasurements(20.0, 50, 1017);
    }
}    